package servico;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

@Stateless(name = "servicoBean")
public class ServicoBean implements Servico 
{
	@PersistenceContext(unitName = "sqlPU")
	private EntityManager em;		
	
	private List<EntidadeServico> servicos = new ArrayList<EntidadeServico>();
	private EntidadeServico servico = new EntidadeServico();
	
	private List<String> equips = new ArrayList<String>();
	private List<Integer> mats = new ArrayList<Integer>();
	
	@Override
	public void addServico(EntidadeServico serv) {
		em.persist(serv);
		em.flush();
	}
	@SuppressWarnings("unchecked")
	@Override
	public List<EntidadeServico> buscaServico() {
		Query qm = em.createQuery("from EntidadeServico");
		servicos = (List<EntidadeServico>) qm.getResultList();
		return servicos;
	}
	@Override
	public EntidadeServico buscaServCod(int codigo) {
		Query qm = em.createQuery("from EntidadeServico where codigo = :codigo");
		qm.setParameter("codigo", codigo);
		servico = (EntidadeServico) qm.getSingleResult();
		return servico;
	}
	@Override
	public void alterarServico(EntidadeServico servico) {
		em.merge(servico);
		em.flush();
	}
	@Override
	public void excluirServico(EntidadeServico servico) {
		Object obj = em.merge(servico);
		em.remove(obj);
		em.flush();
	}
	@Override
	public int getCodigo() {
		return servico.getCodigo();
	}
	@SuppressWarnings("unchecked")
	@Override
	public List<String> getEquips(int codigo) {
		Query qm = em.createQuery("select cod_equip from Item_equip where servEquip.codigo = :codigo");
		qm.setParameter("codigo", codigo);
		equips = (List<String>) qm.getResultList();
		return equips;
	}
	@SuppressWarnings("unchecked")
	@Override
	public List<Integer> getMats(int codigo) {
		Query qm = em.createQuery("select cod_mat from Item_mat where servMat.codigo = :codigo");
		qm.setParameter("codigo", codigo);
		mats = (List<Integer>) qm.getResultList();
		return mats;
	}
	@Override
	public void deleteitens(int codigo) {
		Query qm = em.createQuery("delete Item_mat where servMat.codigo = :codigo");
		qm.setParameter("codigo", codigo);
		qm.executeUpdate();
		em.flush();
		qm = em.createQuery("delete Item_equip where servEquip.codigo = :codigo");
		qm.setParameter("codigo", codigo);
		qm.executeUpdate();
		em.flush();
		
	}

}
